package demo;

import java.util.Random;

public class Demo1 {
    //1.给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.
    //2.实现代码, 能够创建两个线程, 对这个数组的所有元素求和.
    //3.其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.
    //4.最终再汇总两个和, 进行相加
    //5.记录程序的执行时间.
    public static int len=10000000;
    public static long ret=0;
    public static void main(String[] args) throws InterruptedException {
        long start=System.currentTimeMillis();
        Random rd=new Random();
        int[] arr=new int[len];
        for(int i=0;i<len;i++){
            arr[i]=rd.nextInt(100)+1;
        }
        Thread t1=new Thread(()->{
            long sum=0;
            for(int i=1;i<len;i+=2){
                sum+=arr[i];
            }
            ret+=sum;
        });
        Thread t2=new Thread(()->{
            long sum=0;
            for(int i=0;i<len;i+=2){
                sum+=arr[i];
            }
            try {
                t1.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            ret+=sum;
        });
        t1.start();
        t2.start();
        t1.join();
        t2.join();
        System.out.println("ret="+ret);
        long end=System.currentTimeMillis();
        System.out.println("totalTime="+(end-start)+"ms");
    }
}
